package com.jfs.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jfs.entity.ChannelDirectory;
import com.jfs.entity.dto.ChannelDirectoryDropListDto;
import com.jfs.entity.dto.DeviceChannelListDto;
import com.jfs.entity.vo.*;
import com.jfs.result.Result;
import com.jfs.security.vo.LoginUserEntity;

import java.util.List;

/**
 * @Description 设备目录接口
 * @E-mail cwm3412638@163.com
 * @Author cwm
 * @Date 2022/8/10
 */
public interface ChannelDirectoryService extends IService<ChannelDirectory> {
    /**
     * 获取当前用户所拥有通道目录下拉列表
     * @param loginUserEntity
     * @return
     */
    List<ChannelDirectoryDropListDto> dropList(LoginUserEntity loginUserEntity, ChannelDirectoryDropListVo channelDirectoryDropListVo);

    /**
     * 添加通道设备目录
     * @param channelDirectoryAddVo
     * @return
     */
    Result<Object> add(ChannelDirectoryAddVo channelDirectoryAddVo);

    /**
     * 添加通道到目录下
     * @param channelDirectoryAddChannelVo
     * @return
     */
    Result<Object> addChannel(ChannelDirectoryAddChannelVo channelDirectoryAddChannelVo);

    /**
     * 查询目录下的通道列表
     * @param channelDirectoryListChannelVo
     * @return
     */
    IPage<DeviceChannelListDto>  listChannel(ChannelDirectoryListChannelVo channelDirectoryListChannelVo);

    /**
     * 分配目录给用户
     * @param channelDirectoryAddToUserVo
     * @return
     */
    Result<Object> addChannelDirectoryToUser(ChannelDirectoryAddToUserVo channelDirectoryAddToUserVo);

    /**
     * 取消给用户分配目录
     * @param channelDirectoryDeleteToUserVo
     * @return
     */
    Result<Object> deleteChannelDirectoryToUser(ChannelDirectoryDeleteToUserVo channelDirectoryDeleteToUserVo);

    /**
     * 修改目录信息
     * @param channelDirectoryUpdateVo
     * @return
     */
    Result<Object> update( ChannelDirectoryUpdateVo channelDirectoryUpdateVo);

    /**
     * 删除目录
     * @param channelDirectoryDeleteVo
     * @return
     */
    Result<Object> delete( ChannelDirectoryDeleteVo channelDirectoryDeleteVo);
}
